		.EQU	HORAS		0602H
		.EQU	MINUTOS		0601H
		.EQU	SEGUNDOS	0600H
		.EQU	APDIS		67D6H
		.EQU	POSCUR		664CH
		.EQU	ENCPRT		6677H
		.EQU	READKB		50H
		.EQU	STATUS		01H
		.EQU 	DATA		00H
		.ORG	0100H



				
RE:	
		CALL	APDIS
		LD	SP,057FH
		LD	A,00H
		LD	(SEGUNDOS),A
		LD	(MINUTOS),A
		LD	(HORAS),A
MAIN:	CALL	MOSTRAR
		CALL	DELAY
		CALL	DELAY
		CALL	DELAY
		CALL 	STOPRESET
INCREMENTARM:	CALL	INCREMENTAR
		JP	MAIN

; Mostrar horas, minutos y segundos
MOSTRAR:	LD	A,04H
		CALL	POSCUR
		LD	A,(SEGUNDOS)
		CALL	ENCPRT
		LD	A,02H
		CALL	POSCUR
		LD	A,(MINUTOS)
		CALL	ENCPRT
		LD	A,00H
		CALL	POSCUR
		LD	A,(HORAS)
		CALL	ENCPRT
		RET
		
DELAY:		LD	C,0FFH
LOOP1:		LD	B,0FFH
LOOP2:		DEC	B
		JP	NZ,LOOP2
		DEC	C
		JP	NZ,LOOP1
		RET	

INCREMENTAR:	LD	A,(SEGUNDOS)
		ADD	A,1
		DAA
		CP	60H
		JP	Z,INCMIN
		LD	(SEGUNDOS),A
		RET

INCMIN:		LD	A,00H
		LD	(SEGUNDOS),A
		LD	A,(MINUTOS)
		ADD	A,1
		DAA
		CP	60H
		JP	Z,INCHORAS
		LD	(MINUTOS),A
		RET

INCHORAS:	LD	A,00H
		LD	(MINUTOS),A
		LD	A,(HORAS)
		ADD	A,1
		DAA
		CP	24H
		JP	Z,INCMIN
		LD	(HORAS),A
		RET
		
		LD	A,00H
		LD	(HORAS),A
		RET



STOP:	LD	A,READKB
		OUT	(STATUS),A
		IN	A,(STATUS)
		AND 	7
		JP	Z,STOP
		IN	A,(DATA)
		AND 3FH
		CP 	1
		JP 	Z,INCREMENTARM
		


STOPRESET:	LD 	A,READKB
		OUT	(STATUS),A
		IN	A,(STATUS)
		AND	7
		JP	Z,INCREMENTARM
		IN	A,(DATA)
		AND 3FH
		CP 	1
		JP	Z,INCREMENTARM
		CP	2
		JP	Z,STOP
		CP	3
		JP	Z,RE
		RET